]> dgit.raspbian.org Git - gnome-shell.git/log
gnome-shell.git
6 years agoDelay login animation until after wallpaper has loaded
Michael Catanzaro [Tue, 21 Jul 2020 00:00:32 +0000 (19:00 -0500)]
Delay login animation until after wallpaper has loaded

Currently, the login animation can occur before the user's wallpaper has
been loaded. When this happens, we wind up displaying a solid blue
background for half a second or so before the proper background is
displayed. This looks jarring and bad. It's great that we can start
GNOME quickly, but starting up before the wallpaper is ready is *too*
quickly.

I've been meaning to fix this since 2014. Better late than never! We can
just have BackgroundManager emit a loaded signal the first time it loads
its first background, and have the startup animation code wait for that
before proceeding.

Some of this code is by Florian, who helped with promisifying. Thanks!

https://bugzilla.gnome.org/show_bug.cgi?id=734996

6 years agopopupMenu: Handle keypress if numlock is enabled
Olivier Fourdan [Tue, 21 Jul 2020 14:33:04 +0000 (16:33 +0200)]
popupMenu: Handle keypress if numlock is enabled

On Wayland, navigating menus with the keyboard would not open drop-down
menus when NumLock is enabled.

That's old issue (gnome-shell#550) that was not completely fixed with
commit 88556226 because the lock mask needs to be filtered out in
_onKeyPress() as well.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/550
6 years agoUpdate Romanian translation
Daniel Șerbănescu [Tue, 21 Jul 2020 07:08:22 +0000 (07:08 +0000)]
Update Romanian translation

6 years agoUpdate Ukrainian translation
Yuri Chornoivan [Tue, 21 Jul 2020 05:43:54 +0000 (05:43 +0000)]
Update Ukrainian translation

6 years agoappDisplay: Append new icons at the first available page after first
Georges Basile Stavracas Neto [Thu, 25 Jun 2020 20:33:48 +0000 (17:33 -0300)]
appDisplay: Append new icons at the first available page after first

As per design discussion, the first page is a somewhat of a special
page where we really don't want to change anything unless necessary.

Append new icons at the first available slot after the first page.
Make the placeholder icon be appended to the first available page
as well, since it's always used when dragging from folder dialogs.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1284

6 years agoappDisplay: Use a drag monitor to check for out-of-dialog drags
Georges Basile Stavracas Neto [Thu, 25 Jun 2020 19:51:30 +0000 (16:51 -0300)]
appDisplay: Use a drag monitor to check for out-of-dialog drags

When the app folder dialog handles a drag hover, it starts a timeout
to popdown if dragging outside the "real" dialog area. However, when
dragging inside it, BaseAppView handles all drag hover events which
would disarm the popdown timeout. In cases like this, it's almost
impossible to prevent the timeout from triggering, which always pops
down the dialog.

Add a drag monitor when handling any drag hover (which only happens
when dragging outside the folder's icon grid); and eventually disarm
the popdown timeout from the monitor's motion event. Remove the drag
monitor when dragging over the folder dialog again.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1284

6 years agoappDisplay: Increase folder dialog popdown timeout
Georges Basile Stavracas Neto [Thu, 25 Jun 2020 19:10:53 +0000 (16:10 -0300)]
appDisplay: Increase folder dialog popdown timeout

App folders are now customizable, and the way to move icons to
another page is by throwing the cursor to either the left or
the right of the grid.

However, doing that triggers the popdown timeout, wich is 600ms
as of now, which is considerably short for such interaction.

Increase this timeout to 1.5 seconds.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1284

6 years agoappDisplay: Allow reordering folders
Georges Basile Stavracas Neto [Wed, 24 Jun 2020 18:37:42 +0000 (15:37 -0300)]
appDisplay: Allow reordering folders

Implement the methods to sort and query item positions
using the index in the GSettings key, and store the
updated positions when accepting the drop.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1284

6 years agoappDisplay: Factor out folder loading code
Georges Basile Stavracas Neto [Wed, 24 Jun 2020 18:11:51 +0000 (15:11 -0300)]
appDisplay: Factor out folder loading code

We'll reuse this code to implement custom positioning in
folders.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1284

6 years agoappDisplay: Only handle DnD when mapped
Georges Basile Stavracas Neto [Wed, 24 Jun 2020 17:56:32 +0000 (14:56 -0300)]
appDisplay: Only handle DnD when mapped

Now that the DnD code is shared between AppDisplay and
FolderView, we hit an unexpected problem: FolderView is
handling drag events even when the folder dialog is hidden.
As a side effect, this spams the journal with warnings.

Only handle drag events when mapped. On unmap, disable
the view's drag monitor, and disconnect from all drag
events.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1284

6 years agoappDisplay: Move DnD code to BaseAppView
Georges Basile Stavracas Neto [Wed, 24 Jun 2020 17:53:12 +0000 (14:53 -0300)]
appDisplay: Move DnD code to BaseAppView

This code will be shared with FolderView in the next commit, so
avoid duplication already and move the to-be-shared code into the
base class.

Because BaseAppView can handle vertical and horizontal orientations,
adapt the drag overshoot code to also handle horizontal overshoot.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1284

6 years agoappDisplay: Fully hide icon when dragging
Georges Basile Stavracas Neto [Wed, 24 Jun 2020 15:53:36 +0000 (12:53 -0300)]
appDisplay: Fully hide icon when dragging

The partially visible icon causes more problems than
it solves, visually speaking. Fade it out completely
while dragging.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1284

6 years agoappDisplay: Ensure icons always are at the correct position
Georges Basile Stavracas Neto [Tue, 23 Jun 2020 15:18:56 +0000 (12:18 -0300)]
appDisplay: Ensure icons always are at the correct position

When redisplaying, we currently only remove and add icons, but
never adjust the position of already added icons. If the icon
position changed, it wouldn't be reflected on the icon grid.

Make sure to move already added icons.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1284

6 years agoappDisplay: Add placeholder when moving from folder dialog
Georges Basile Stavracas Neto [Tue, 23 Jun 2020 15:05:27 +0000 (12:05 -0300)]
appDisplay: Add placeholder when moving from folder dialog

When moving an icon from a folder dialog, the app grid doesn't
really have an icon to move around.

Add a placeholder icon and hijack it in the various places.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1284

6 years agoappDisplay: Restore dragged item's position on drag cancel
Georges Basile Stavracas Neto [Tue, 23 Jun 2020 13:33:22 +0000 (10:33 -0300)]
appDisplay: Restore dragged item's position on drag cancel

Otherwise we end up with the grid in an inconsistent state.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1284

6 years agoappDisplay: Allow overshooting any icon
Georges Basile Stavracas Neto [Wed, 27 May 2020 18:49:29 +0000 (15:49 -0300)]
appDisplay: Allow overshooting any icon

Now that the icon being dragged can come from AppDisplay and also
a folder dialog, the check for when to overshoot is broken. Check
if the icon is a BaseAppView icon.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1284

6 years agoappDisplay: Create app folder where the drop happened
Georges Basile Stavracas Neto [Wed, 27 May 2020 01:29:29 +0000 (22:29 -0300)]
appDisplay: Create app folder where the drop happened

Create the app folder where the icon we drop at is located. This
ensures the folder icon doesn't go into the last page, hidden and
solitary.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1284

6 years agoappDisplay: Don't resort folders when name changes
Georges Basile Stavracas Neto [Tue, 26 May 2020 21:55:18 +0000 (18:55 -0300)]
appDisplay: Don't resort folders when name changes

With a customizable app grid, we don't want folders to move
after renaming. Their position is fixed.

Remove the sort-after-rename code from AppDisplay.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1284

6 years agoappDisplay: Make FolderIcon draggable
Georges Basile Stavracas Neto [Tue, 26 May 2020 21:26:52 +0000 (18:26 -0300)]
appDisplay: Make FolderIcon draggable

By making it a subclass of AppViewItem, it automagically inherits
the DnD code.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1284

6 years agoappDisplay: Check 'app-picker-layout' to make icons draggable
Georges Basile Stavracas Neto [Thu, 16 Jul 2020 14:15:03 +0000 (11:15 -0300)]
appDisplay: Check 'app-picker-layout' to make icons draggable

Now we drag not only to the Dash, but also to the icon grid itself,
so make the app icon draggable only when either one or the other is
writable.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1284

6 years agoappDisplay: Factor out draggable code into AppViewItem
Georges Basile Stavracas Neto [Tue, 26 May 2020 21:05:40 +0000 (18:05 -0300)]
appDisplay: Factor out draggable code into AppViewItem

This will be shared by the FolderIcon.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1284

6 years agoappDisplay: Use custom function to retrieve item page and position
Georges Basile Stavracas Neto [Tue, 26 May 2020 04:41:43 +0000 (01:41 -0300)]
appDisplay: Use custom function to retrieve item page and position

It is important that '_loadApps()' return a sorted list -- adding the
same icons at the same positions but in different orders results in
a wrong icon grid.

Add support for using a custom positioning function, and implement it
in AppDisplay. Because FolderView doesn't implement a custom sorting
function, the items are still sorted alphabetically.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1284

6 years agoappDisplay: Save pages after dropping
Georges Basile Stavracas Neto [Tue, 26 May 2020 04:41:17 +0000 (01:41 -0300)]
appDisplay: Save pages after dropping

Save the icon grid layout after dropping, and only in
that moment.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1284

6 years agoappDisplay: Introduce PageManager
Georges Basile Stavracas Neto [Thu, 5 Dec 2019 15:31:52 +0000 (12:31 -0300)]
appDisplay: Introduce PageManager

The PageManager does the heavy lifting between reading the
'app-picker-layout' GSettings key, and saving the new pages.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1284

6 years agogschema: Introduce the 'app-picker-layout' key
Georges Basile Stavracas Neto [Thu, 5 Dec 2019 14:00:21 +0000 (11:00 -0300)]
gschema: Introduce the 'app-picker-layout' key

This is the key that will be used to store the pages and the icons in
each page. The idea is that we we store an a{sv} variant for each page.
This variant will contain <icon id> → array of properties, where we
can store arbitrary data for each icon. The expected output of this
key is:

[
  {
    'polari.desktop': <{ 'position': 0 }>,
    'epiphany.deskop': <{ 'position': 1 }>,
  },
  {
    'telegram.desktop': <{ 'position': 2 }>,
    'builder.desktop': <{ 'position': 0 }>,
    'gitg.desktop': <{ 'position': 1 }>,
  }
]

The toplevel array is sorted, and pages of the grid always show in the
order they are stored.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1284

6 years agoappDisplay: Allow incomplete pages
Georges Basile Stavracas Neto [Tue, 26 May 2020 01:01:25 +0000 (22:01 -0300)]
appDisplay: Allow incomplete pages

Allow incomplete pages in the main grid, but not on folders.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1284

6 years agoappDisplay: Move icons when hovering the grid
Georges Basile Stavracas Neto [Mon, 22 Jun 2020 21:22:13 +0000 (18:22 -0300)]
appDisplay: Move icons when hovering the grid

Implement a minimal version of the reflow-on-hover behavior,
which gives a better sense of physicality to the grid.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1284

6 years agoappDisplay: Factor out item addition and removal methods
Georges Basile Stavracas Neto [Tue, 26 May 2020 13:58:17 +0000 (10:58 -0300)]
appDisplay: Factor out item addition and removal methods

It'll be useful later.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1284

6 years agoappDisplay: Accept dropping any kind of icon over it
Georges Basile Stavracas Neto [Tue, 26 May 2020 14:19:39 +0000 (11:19 -0300)]
appDisplay: Accept dropping any kind of icon over it

The grid will be able to handle them. As of now, it doesn't
do anything with folder icons, or icons in folders.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1284

6 years agoappDisplay: Introduce moveItem API
Georges Basile Stavracas Neto [Tue, 26 May 2020 13:58:56 +0000 (10:58 -0300)]
appDisplay: Introduce moveItem API

This is a simplistic API that basically removes the
icon from it's old location, and adds it to its new
location.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1284

6 years agoappDisplay: Ignore dragging over leeways
Georges Basile Stavracas Neto [Mon, 25 May 2020 19:00:23 +0000 (16:00 -0300)]
appDisplay: Ignore dragging over leeways

The leeways are parts of the icon that ignore incoming drag
events. This is how IconGrid and IconGridLayout treat it, and
this is how the icons should treat themselves too.

Make AppIcon ignore dragging over the left and right leeways.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1284

6 years agoiconGrid: Add drop target API
Georges Basile Stavracas Neto [Mon, 25 May 2020 18:58:39 +0000 (15:58 -0300)]
iconGrid: Add drop target API

Add a new drop target API. The bulk of it is implemented by
IconGridLayout, since it's the layout manager that knows where
each icon is placed at.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1284

6 years agocalendar-server: Remove delay before event emission
Sebastian Keller [Mon, 20 Jul 2020 10:05:15 +0000 (12:05 +0200)]
calendar-server: Remove delay before event emission

The timeout seems to have been carried over from the old code that
relied on gnome-shell calling 'GetEvents' after every 'Changed' signal
where it was used to throttle the signal. In the new code where
calendar-server is sending the changes themselves via signals this is no
longer necessary and actually causes a delay when switching between
months.

Fixes https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2992

6 years agokeyboard: Fix missing key icons in numeric level
Emre Uyguroglu [Fri, 17 Jul 2020 11:56:14 +0000 (11:56 +0000)]
keyboard: Fix missing key icons in numeric level

Those were missed in commit 57669bca1b2.

https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2631

6 years agokeyboard: Move named icons into subdirectories
Emre Uyguroglu [Fri, 17 Jul 2020 11:55:14 +0000 (11:55 +0000)]
keyboard: Move named icons into subdirectories

While GtkIconTheme does look up icons in the toplevel icons resource
path, it will only use them as ultimate fallback. That is, if the
icon theme (or the hicolor fallback) include a "keyboard" icon, it
will be used over the "keyboard-enter-symbolic" icon in the resource.

Moving the icons to appropriate subdirectories gives them higher
priority than the fallback names, and thus fixes the issue.

https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2631

6 years agoUpdate Brazilian Portuguese translation
Rafael Fontenelle [Sun, 19 Jul 2020 12:54:47 +0000 (12:54 +0000)]
Update Brazilian Portuguese translation

6 years agoUpdate Brazilian Portuguese translation
Rafael Fontenelle [Sat, 18 Jul 2020 13:43:51 +0000 (13:43 +0000)]
Update Brazilian Portuguese translation

(cherry picked from commit 222919cfc1e51a7048503cdc52d50c5814250fde)

6 years agoUpdate Brazilian Portuguese translation
Rafael Fontenelle [Fri, 17 Jul 2020 21:36:10 +0000 (21:36 +0000)]
Update Brazilian Portuguese translation

(cherry picked from commit db30fbe3e93cde8690075fbb434d5a336ed0ad6b)

6 years agoextensionDownloader: Fix check for updates with several extensions
Jeremias Ortega [Tue, 14 Jul 2020 04:38:25 +0000 (22:38 -0600)]
extensionDownloader: Fix check for updates with several extensions

When having several extensions installed checking for updates fails.
This is because we are using GET and query params and since we are
sending all the metadata of the extension the server returns 502
when the URL is too long. This error code is ignored safely.

It is only needed to send the version of the extension to check if it
has updates.

Fixes https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2962
https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1363

6 years agolayout: Remove redundant background refresh
Jonas Ådahl [Thu, 9 Jul 2020 07:18:27 +0000 (09:18 +0200)]
layout: Remove redundant background refresh

When using the NVIDIA driver, textures tend to loose their pixels when
suspending. In the past we handled this by figuring out when the NVIDIA
driver was used, and reload the background whenever we noticed we
resumed from suspend.

This shouldn't be needed anymore after
https://gitlab.gnome.org/GNOME/mutter/merge_requests/600, as it should
handle this by listening to video-memory-purged signal. Thus remove our
special handling here.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1358

6 years agoUpdate Greek translation
Efstathios Iosifidis [Tue, 14 Jul 2020 20:43:58 +0000 (20:43 +0000)]
Update Greek translation

6 years agoworkspace: Always set state at the end of overview transition
Florian Müllner [Sat, 11 Jul 2020 21:08:42 +0000 (23:08 +0200)]
workspace: Always set state at the end of overview transition

We don't change to the zoomed out state when fading to the overview,
however we should do that after the transition in case the user
switches to the window picker.

https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2969

6 years agoworkspace: Reset window opacity after overview transitions
Florian Müllner [Sat, 11 Jul 2020 15:49:04 +0000 (17:49 +0200)]
workspace: Reset window opacity after overview transitions

When using the fade animation when transitioning to the overview instead
of zoom, we fade out all window previews to fully transparent. But after
commit 751189253a removed the old _updateWindowPositions() function,
nothing resets the opacity again, so when switching from the app- to the
window picker, all previews are hidden.

Fix this by always resetting the window preview opacity after showing
or hiding the overview.

https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2969

6 years agoworkspace: Always use floating layout for fade transition
Florian Müllner [Sat, 11 Jul 2020 15:38:04 +0000 (17:38 +0200)]
workspace: Always use floating layout for fade transition

We don't animate size and position when fading, so we want all previews
to already be at their final position. However when the app picker is
opened from within the overview, window previews use the zoomed layout,
so that's the state we are then fading when leaving the overview from
the app picker.

Fix that by setting the correct state at the start of the fade transition.

(In the case of fadeToOverview(), the value should always be correct
already, but set it anyway for symmetry with fadeFromOverview())

https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2969

6 years agoworkspacesView: Really don't animate primary view when fading
Florian Müllner [Sat, 11 Jul 2020 16:19:27 +0000 (18:19 +0200)]
workspacesView: Really don't animate primary view when fading

In commit 9297d87775d64 we stopped syncing the primary view's actual
geometry at the start of the transition when doing a fade animation,
however the view animation may still be triggered by an allocation
change.

Prevent those unwanted size changes during fade by keeping track of
the fade state and explicitly skip syncing the geometry while a fade
is ongoing.

https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2969

6 years agoworkspacesView: Do not skip entire overview transition
Florian Müllner [Sat, 11 Jul 2020 16:10:18 +0000 (18:10 +0200)]
workspacesView: Do not skip entire overview transition

Since commit af543daf1c3, we skip the overview transition when the
actual geometry hasn't been set yet. However with the new layout
manager, the only bit that still needs the separate geometry is
the transition of the view, the workspaces can do their transition
just fine.

https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2969

6 years agoUpdate Friulian translation
Fabio Tomat [Sun, 12 Jul 2020 16:08:10 +0000 (16:08 +0000)]
Update Friulian translation

6 years agoUpdate Chinese (China) translation
Boyuan Yang [Sun, 12 Jul 2020 02:35:34 +0000 (02:35 +0000)]
Update Chinese (China) translation

6 years agoUpdate Chinese (China) translation
Boyuan Yang [Sun, 12 Jul 2020 02:14:16 +0000 (02:14 +0000)]
Update Chinese (China) translation

6 years agoworkspacesView: Update visibily when gesture drag begins
Georges Basile Stavracas Neto [Fri, 10 Jul 2020 13:41:09 +0000 (10:41 -0300)]
workspacesView: Update visibily when gesture drag begins

When dragging the workspaces through the swipe gesture, all
workspaces must be visible. WorkspacesView's _updateVisibility()
method special-cases this and ensures that.

However, this method is only called when (1) going to the active
workspace, and (2) when the gesture ends. That means, if there
is any workspace hidden by the time a gesture starts, it is never
shown!

Call _updateVisibility() on startTouchGesture() as well.

Related: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2969

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1360

6 years agoUpdate German translation
Tim Sabsch [Thu, 9 Jul 2020 20:29:47 +0000 (20:29 +0000)]
Update German translation

6 years agoworkspaceSwitcherPopup: Set offscreen redirect always
Daniel van Vugt [Wed, 8 Jul 2020 10:06:39 +0000 (18:06 +0800)]
workspaceSwitcherPopup: Set offscreen redirect always

Because for most frames during a workspace switch it's not changing and
we can repaint it faster if it's cached on the GPU as a single texture.

This seems to reduce the render time for workspace switching by more
than 20%.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1356

6 years agoshell/window-tracker: Tighten sandbox ID prefix check
Florian Müllner [Wed, 8 Jul 2020 09:59:13 +0000 (11:59 +0200)]
shell/window-tracker: Tighten sandbox ID prefix check

Since commit b60836932 we only allow WM_CLASS matches for sandboxed
applications if the found app's ID is prefixed by the sandbox ID.

The existing check still has a hole in it though: "org.example.Foo"
and "org.example.FooDevel" are different applications, yet the former
is a prefix of the latter.

So tighten the check by including a trailing "." in the checked prefix;
this excludes cases like the above, while still working for the regular
case of a single .desktop file because our app IDs include the ".desktop"
suffix.

Spotted by wjt.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1357

6 years agoBump version to 3.37.3
Florian Müllner [Tue, 7 Jul 2020 01:04:17 +0000 (03:04 +0200)]
Bump version to 3.37.3

Update NEWS.

6 years agowindowPreview: Adapt to ClutterActor API changes
Jonas Dreßler [Fri, 19 Jun 2020 12:13:12 +0000 (14:13 +0200)]
windowPreview: Adapt to ClutterActor API changes

The API of clutter_actor_allocate_preferred_size() changed with
https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1310, so adapt to
this change and pass the origin to the function.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1322

6 years agoworkspacesView: Do not animate primary view geometry when fading
Florian Müllner [Tue, 7 Jul 2020 10:57:51 +0000 (12:57 +0200)]
workspacesView: Do not animate primary view geometry when fading

When going straight to the app picker, we fade in the overview instead
of doing the full-blown zoom transition. In order to keep windows at
their floating position, we must apply the same to the view itself
and not transition to the overview geometry when fading.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1353

6 years agoworkspacesView: Always sync geometry after showing overview
Florian Müllner [Tue, 7 Jul 2020 11:25:47 +0000 (13:25 +0200)]
workspacesView: Always sync geometry after showing overview

We don't always want to sync the geometry when entering the overview,
namely when the fade transition is used.

However we do want the correct geometry once we have entered the overview,
so that workspaces are at their place when switching from the app picker.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1353

6 years agoworkspacesView: Decouple syncing geometry from updating views
Florian Müllner [Tue, 7 Jul 2020 11:23:50 +0000 (13:23 +0200)]
workspacesView: Decouple syncing geometry from updating views

This gives us more control over when the geometry is synced. We
will soon use that to keep the primary view at the work area
geometry while fading to the overview.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1353

6 years agoworkspacesView: Only animate primary view
Florian Müllner [Tue, 7 Jul 2020 11:06:29 +0000 (13:06 +0200)]
workspacesView: Only animate primary view

Non-primary views always use their monitor's work area for their
geometry, so there's nothing to animate when leaving the overview.

The animation is already limited to the primary view when entering
the overview, so this is also more consistent.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1353

6 years agoworkspace: Always start in FLOATING state
Florian Müllner [Tue, 7 Jul 2020 10:44:50 +0000 (12:44 +0200)]
workspace: Always start in FLOATING state

It doesn't matter which animation we use to enter the overview,
we always want to start and end with the floating layout.

The simplest way to achieve that is by creating the state adjustment
with the correct value in the first place.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1353

6 years agoworkspace: Remove reserved slots
Georges Basile Stavracas Neto [Wed, 3 Jun 2020 00:22:40 +0000 (21:22 -0300)]
workspace: Remove reserved slots

This is a pre-3.0 feature that was dropped before
the 3.0 release, but managed to find its way until
now, 11 years later.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1352

6 years agounlockDialog: Small cleanup
Florian Müllner [Mon, 6 Jul 2020 23:21:18 +0000 (01:21 +0200)]
unlockDialog: Small cleanup

It's silly to initialize a variable to 0 right before setting it
to its actual value.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1352

6 years agowindowPreview: Remove slotId property
Jonas Dreßler [Tue, 7 Jul 2020 09:21:02 +0000 (11:21 +0200)]
windowPreview: Remove slotId property

We're no longer using that property, so clean up a bit and remove the
last occurences of it.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1351

6 years agoworkspacesView: Add back overview transition
Florian Müllner [Thu, 25 Jun 2020 17:54:54 +0000 (19:54 +0200)]
workspacesView: Add back overview transition

The transition was temporarily removed when switching to the new
workspace layout manager. Now everything is in place to reimplement
it with a combination of the layout manager's state adjustment and
the view's allocation.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1345

6 years agoworkspacesView: Properly allocate workspaces
Florian Müllner [Fri, 26 Jun 2020 14:04:44 +0000 (16:04 +0200)]
workspacesView: Properly allocate workspaces

So far we've been allocating workspaces in a stack, and relied on
translation to move them to the right position. And as the position
depends on both the workspace's index and the view's viewport, some
care is needed to prevent gestures/scrolling from interfering with
layout updates.

Clean that up by properly allocating workspaces in a row or column,
and use a translation to reflect the current scroll position.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1345

6 years agoworkspacesView: Don't set full geometry
Florian Müllner [Sat, 27 Jun 2020 15:32:14 +0000 (17:32 +0200)]
workspacesView: Don't set full geometry

It's not used anymore.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1345

6 years agoworkspacesView: Stop using full geometry
Florian Müllner [Sat, 27 Jun 2020 15:25:25 +0000 (17:25 +0200)]
workspacesView: Stop using full geometry

Since the workspaces themselves stopped using it, there is little
reason for upholding the difference between "full" and "actual"
geometry.

Just base positioning/swiping on the view's allocation.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1345

6 years agoworkspacesView: Use work area for default geometry
Florian Müllner [Thu, 25 Jun 2020 23:08:29 +0000 (01:08 +0200)]
workspacesView: Use work area for default geometry

The workspace's layout manager keeps the workspace at the same ratio as
the work area, so it makes more sense to base the views' default geometry
on that as well than the monitor area we are using right now.

(It shouldn't matter much in practice, as this only affects views on
non-primary monitors where the work area usually matches the monitor area)

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1345

6 years agoworkspacesView: Simplify syncing actual geometry
Florian Müllner [Thu, 25 Jun 2020 23:15:33 +0000 (01:15 +0200)]
workspacesView: Simplify syncing actual geometry

We adjust the size and position of the primary view to match the workspaces
display, but views on other monitors are always set to fill their monitor.

Take that into account and create views with a fixed size and position, then
only sync the primary view to the new geometry.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1345

6 years agoworkspace: Use actual container allocation
Florian Müllner [Fri, 26 Jun 2020 01:22:29 +0000 (03:22 +0200)]
workspace: Use actual container allocation

We currently assume that the passed in Clutter.ActorBox matches
the container allocation, but in reality it is the container's
content area.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1345

6 years agoworkspace: Account for window picker padding
Florian Müllner [Fri, 26 Jun 2020 00:56:35 +0000 (02:56 +0200)]
workspace: Account for window picker padding

Workspaces are supposed to request the work area as their preferred
size, however the widget will adjust the sizes returned by the
layout manager to account for borders and padding.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1345

6 years agoworkspace: Disable preview overlays unless fully zoomed out
Florian Müllner [Fri, 26 Jun 2020 15:06:38 +0000 (17:06 +0200)]
workspace: Disable preview overlays unless fully zoomed out

The overlays are only meant to be shown when the workspace is fully
zoomed out, not when using the floating layout or some in-between state.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1345

6 years agowindowPreview: Allow to disable overlay
Florian Müllner [Fri, 26 Jun 2020 15:01:31 +0000 (17:01 +0200)]
windowPreview: Allow to disable overlay

WindowPreviews now contain and manage overlaid elements like close
button or title label themselves. That's generally better, but right now
the only way to disable those overlays (for example during transitions)
is to prevent any hover or focus events from getting to the preview.

Instead, add some explicit API for enabling or disabling overlay support.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1345

6 years agoworkspace: Handle minimized windows in layout
Florian Müllner [Thu, 25 Jun 2020 18:25:22 +0000 (20:25 +0200)]
workspace: Handle minimized windows in layout

The new layout manager always uses the window's regular size and position
for the floating state, but the preview of minimized windows should be
hidden instead.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1345

6 years agowindowPreview: Ensure style as soon as preview is realized
Jonas Dreßler [Mon, 6 Jul 2020 13:44:25 +0000 (15:44 +0200)]
windowPreview: Ensure style as soon as preview is realized

For the windowPreview we need to ensure the style information of the
border and title is up-to-date when chromeWidths() or chromeHeights() is
called. Since the introduction of the WorkspaceLayout those functions
may be called during an allocation cycle, which means we should avoid
calling queuing relayouts inside them. Calling StWidgets ensure_style()
method will queue a relayout though in case the newly generated theme
node has a different geometry.

So avoid queueing a relayout during allocation cycles (and the warning
Clutter logs because of that) by ensuring the style of the border and
title earlier, as soon as the WindowPreview is attached to a stage.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1305

6 years agoworkspace: Animate opening new windows while in overview
Jonas Dreßler [Wed, 3 Jun 2020 16:32:45 +0000 (18:32 +0200)]
workspace: Animate opening new windows while in overview

Use the pivot point and scale to animate in new windows which are opened
while the overview is shown.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1305

6 years agoworkspace: Use the new WorkspaceLayout for allocating window clones
Jonas Dreßler [Wed, 3 Jun 2020 16:17:54 +0000 (18:17 +0200)]
workspace: Use the new WorkspaceLayout for allocating window clones

Switch to the new WorkspaceLayout layout manager to allocate the window
clones of the overview properly using Clutters layouting mechanisms.

Since we now no longer make use of the fullGeometry, we can remove the
setFullGeometry() function from the Workspace class. Also we can stop
setting the actualGeometry on the Workspaces and WorkspaceViews and
instead just set the fixed position and size of the views to their
full or actual geometry. This also has the benefit that we no longer
have to set a custom clip, but can simply enable clip_to_allocation.

The geometry needs to be set inside a BEFORE_REDRAW later because
_updateWorkspacesActualGeometry() is called from a notify::allocation
handler.

This isn't doing any animations when showing/hiding the overview yet,
we'll add that in the next commit.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1305

6 years agoworkspace: Introduce layout manager for allocating the Workspace
Jonas Dreßler [Wed, 3 Jun 2020 16:10:09 +0000 (18:10 +0200)]
workspace: Introduce layout manager for allocating the Workspace

Add a new ClutterLayoutManager for layouting the workspaces of the
overview, WorkspaceLayout.

This layout manager integrates the existing LayoutStrategies used to
layout the window clones of the overview and supports freezing the
layout, animating between layout changes and adjusting the spacing for
the width and height of the window chrome. It also adds support for a
layout of the windows that looks the same as the actual workspace,
transitioning between that layout and the LayoutStrategy can be done by
setting the value of an StAdjustment, available using the
stateAdjustment getter function.

This will replace the current static-positioning based layouting of the
window clones in the next commit.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1305

6 years agoworkspacesViews: Use translation for showing Workspaces
Jonas Dreßler [Wed, 3 Jun 2020 16:07:01 +0000 (18:07 +0200)]
workspacesViews: Use translation for showing Workspaces

We're going to use fixed position for positioning workspaces when
they're allocated by their own layout manager, using those positions to
scroll between different workspaces interferes with that, so do that
using translations instead.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1305

6 years agokeyboard: Request a bigger size in portrait orientation
Florian Müllner [Sat, 4 Jul 2020 00:36:10 +0000 (02:36 +0200)]
keyboard: Request a bigger size in portrait orientation

In portrait orientation, we set the height to the preferred height
for the monitor width (or, if smaller, a third o the screen height).

However as the forWidth currently doesn't make a difference, the height
is effectively controlled by the natural height of the keys - which is
rather small.

Address this by making AspectContainer request an appropriate preferred
size based on the fixed ratio.

https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2349

6 years agokeyboard: Fix setting height in portrait orientation
Florian Müllner [Sat, 4 Jul 2020 00:22:10 +0000 (02:22 +0200)]
keyboard: Fix setting height in portrait orientation

get_preferred_height() returns both the minimum and natural height,
not a single size. Math.min() doesn't handle that and returns NaN,
whoops.

https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2349

6 years agoshell/window-tracker: Match on WM_CLASS first
Florian Müllner [Fri, 3 Jul 2020 15:34:23 +0000 (17:34 +0200)]
shell/window-tracker: Match on WM_CLASS first

Currently our heuristics for matching a window to its app check
for the application ID before the WM_CLASS, as the ID is more
reliable in so far that it is outside the application's control
and so it cannot use it to spoof a different application.

However this also prevents applications with multiple .desktop
files like LibreOffice from matching any .desktop files other
than the one under the main ID.

Since we now no longer allow the WM_CLASS to match a .desktop
file that doesn't belong to the sandboxed application, we can
fix that issue by checking the WM_CLASS first, without opening
the door to spoofing.

https://gitlab.gnome.org/GNOME/gnome-shell/issues/219

6 years agoshell/window-tracker: Enforce prefix for sandboxed applications
Florian Müllner [Fri, 3 Jul 2020 14:59:07 +0000 (16:59 +0200)]
shell/window-tracker: Enforce prefix for sandboxed applications

At least flatpak (no idea about snap, sorry) enforces that all .desktop
files exported by a sandboxed app use the application ID as prefix.

Add the same check when trying to find a match based on the WM_CLASS,
to prevent sandboxed apps from matching a .desktop file they do not
own.

At the moment this is unlikely as we check for a match on the
sandboxed app ID first, but we are about to change that.

https://gitlab.gnome.org/GNOME/gnome-shell/issues/219

6 years agoshell/window-tracker: Minor simplification
Florian Müllner [Fri, 3 Jul 2020 15:28:45 +0000 (17:28 +0200)]
shell/window-tracker: Minor simplification

Switching to autocleanup gives us a better separation between the
app/no-app cases.

https://gitlab.gnome.org/GNOME/gnome-shell/issues/219

6 years ago gdm: Introduce vmware credential manager for pre-authenticated logins
yun341 [Wed, 1 Jul 2020 22:54:55 +0000 (06:54 +0800)]
gdm: Introduce vmware credential manager for pre-authenticated logins

    The previous commit implemented a new CredentialManager interface to
    facilitate adding additional providers for pre-authenticating the user
    at the login screen.

    This commit implements a new credential manager using that interface
    for vmware deployments.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/issues/1983
6 years ago gdm: Refactor oVirt to a generic CredentialManager interface
yun341 [Fri, 3 Jan 2020 16:31:15 +0000 (00:31 +0800)]
gdm: Refactor oVirt to a generic CredentialManager interface

    Commit 4cda61a1 added support for pre-authenticated logins in
    oVirt environments. This feature prevents a user from having
    to type their password twice (once to the oVirt management machine,
    and then immediately again in the provisioned guest running gnome-shell).
    That feature is currently oVirt specific, but a similar feature would
    be useful in non-oVirt based virt farm environments.

    Toward that end, this commit generalizes the various aspects of the
    oVirt integration code, so that it can be reused in a subsequent
    commit for adding single sign on support in vmware deployments, too.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/issues/1983
6 years agobackground: Use actor.content.background
Daniel van Vugt [Wed, 1 Jul 2020 10:51:33 +0000 (18:51 +0800)]
background: Use actor.content.background

Because actor.background no longer exists and emitted errors when
referenced.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2949
https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1343

6 years agost/adjustment: Add ::actor property
Jonas Ådahl [Tue, 16 Jun 2020 20:03:07 +0000 (22:03 +0200)]
st/adjustment: Add ::actor property

Will be used by transitions to set the timeline actor.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1299

6 years agoshell/global: Adapt to after-paint signal type signature
Jonas Ådahl [Wed, 27 May 2020 07:34:01 +0000 (09:34 +0200)]
shell/global: Adapt to after-paint signal type signature

A stage view parameter was added.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1299

6 years agost/theme-node-transition: Pass actor when constructing timeline
Jonas Ådahl [Tue, 21 Apr 2020 16:50:15 +0000 (18:50 +0200)]
st/theme-node-transition: Pass actor when constructing timeline

Timelines now take an actor, to be able to derive an appropriate frame
clock, so pass the one of the actor we're transitioning on.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1299

6 years agomessageTray: Remove SourceActorWithLabel class
Mariana Picolo [Wed, 1 Jul 2020 22:18:04 +0000 (19:18 -0300)]
messageTray: Remove SourceActorWithLabel class

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1346

6 years agoshell/app: Add new get_icon() method
Florian Müllner [Tue, 30 Jun 2020 14:53:50 +0000 (16:53 +0200)]
shell/app: Add new get_icon() method

Now that we can always associate a GIcon with the app, add a method
to access it. While create_icon_texture() is still likely to be more
convenient in most cases, exposing the icon can still be useful, for
example to add it to a different kind of actor or to compare it with
other GIcons.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1342

6 years agost/texture-cache: Return a GIcon from bind_cairo_surface_property()
Florian Müllner [Tue, 30 Jun 2020 14:48:16 +0000 (16:48 +0200)]
st/texture-cache: Return a GIcon from bind_cairo_surface_property()

We still load the surface into an StImageContent, but instead of
adding the content to an actor we hand out, return the content
itself (as GIcon).

That means we lose the ability to specify an icon size, but as we
get the pixel data from a fixed-size surface anyway, that shouldn't
matter much in practice.

Not to mention that the function is only used for fallback X11 icons,
which are already shit more often than not.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1342

6 years agost/image-content: Implement GIcon interface
Florian Müllner [Tue, 30 Jun 2020 02:12:16 +0000 (04:12 +0200)]
st/image-content: Implement GIcon interface

On the one hand, this is a bit of a stretch: StImageContent is what
we create from GIcons.

But on the other hand, there's some justification: StImageContent does
represent an image (and likely icon) after all, and there's some
precedent with GdkPixbuf.

In the end as we don't care about serialization or loading from other
API, we can go with a very crude implementation that allows us to
pass out a content as GIcon and use it directly when "loading" it.

We will use that soon to represent X11 window icons as GIcons, which
in turn will allow us to unify app icon handling.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1342

6 years agost/viewport: Invalidate transform when it changes
Jonas Dreßler [Thu, 12 Mar 2020 12:33:25 +0000 (13:33 +0100)]
st/viewport: Invalidate transform when it changes

Since ClutterActor now caches the whole transformation matrix for an
actor, we need to invalidate the cached transform if the matrix returned
by apply_transform() implementations changes.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1308

6 years agost/widget: Remove get_resource_scale function
Jonas Dreßler [Thu, 28 May 2020 12:47:17 +0000 (14:47 +0200)]
st/widget: Remove get_resource_scale function

ClutterActor provides the same function, but with a different return
value. So since we already switched to the ClutterActor implementation
in our C code, we can now safely remove st_widget_get_resource_scale()
and update the JS code that's still using the old API.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1287

6 years agoSwitch to ClutterActors resource-scale-changed signal
Jonas Dreßler [Thu, 28 May 2020 12:43:26 +0000 (14:43 +0200)]
Switch to ClutterActors resource-scale-changed signal

Instead of using the "notify::resource-scale" signal and StWidgets
"resource-scale-changed" signal, use the new "resource-scale-changed"
signal of ClutterActor, which replaces its "resource-scale" property.

Since we'd now have two "resource-scale-changed" signals, one on
ClutterActor and one on StWidget, remove the StWidget one in favour of
the new one.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1287

6 years agoUse new clutter_actor_get_resource_scale() API
Jonas Dreßler [Thu, 28 May 2020 12:39:11 +0000 (14:39 +0200)]
Use new clutter_actor_get_resource_scale() API

Update the existing users of clutter_actor_get_resource_scale() to the
new API which doesn't return a boolean value.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1287

6 years agounlockDialog: Fix scale-factor handling on multihead
Florian Müllner [Tue, 30 Jun 2020 11:08:03 +0000 (13:08 +0200)]
unlockDialog: Fix scale-factor handling on multihead

The blur effect needs to take the scale-factor into account, so we
listen for scale changes. However we set up the signal handler when
creating a background, which is repeated for each monitor, and every
time the monitor configuration changes. But we only disconnect the
last handler that was connected, and only when we are destroyed,
not when recreating backgrounds.

Fix this by splitting out updating the effect parameters to a separate
method that iterates over all backgrounds, so we can simply set up the
handler from the constructor.

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1341

6 years agoaltTab: Remove down arrow when removing an app from switcher
Sebastian Keller [Mon, 29 Jun 2020 20:51:41 +0000 (22:51 +0200)]
altTab: Remove down arrow when removing an app from switcher

The arrow of the removed app was still left in the list with the
visibility of the arrow still depending on the original list order. This
could either lead to apps with just one window now suddenly having a
down arrow or apps with multiple windows not having one. If the last
window in the list had a down arrow, it would have been displayed
outside the window switcher.

Fixes https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2935

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1340